package agenda;

import java.util.Scanner;

import agendaext.AgendaExt;

//import es.uji.www.GeneradorDatosINE;

/**
 * Clase para probar la agenda.
 * 
 * @author Paco Cueto & Juan Carlos Bustamante
 * @version 1.0
 * 
 */

public class PruebaAgenda {
    private enum Opciones {
	NUEVA_PERSONA("Insercion de una nueva persona"), NUEVA_EMPRESA(
		"Insercion de una nueva empresa"), LISTAR(
		"Listado completo de la agenda"), BUSCAR_NOMBRE(
		"Buscar por nombre"), BUSCAR_DIRECCION("Buscar por direccion"), GENERAR_XML(
		"Salida en formato XML"), SALIR("No comments");
	private String titulo;

	Opciones(String titulo) {
	    this.titulo = titulo;
	}

	public String getTitulo() {
	    return titulo;

	}
    }

    private AgendaExt miAgenda;

    private PruebaAgenda() {
	miAgenda = new AgendaExt();
    }

    public static void main(String[] args) {
	new PruebaAgenda().ejecuta();
    }

    private void ejecuta() {
	Opciones opt;
	do {
	    mostrarMenu();
	    opt = pedirOpcion();
	    ejecutarAccion(opt);
	} while (opt != Opciones.SALIR);

    }

    private void mostrarMenu() {
	for (Opciones opcion : Opciones.values())
	    System.out.println(opcion.ordinal() + " " + opcion + " : "
		    + opcion.getTitulo());

    }

    private Opciones pedirOpcion() {
	int opt;
	System.out.println("Opcion: ");
	Scanner scanner = new Scanner(System.in);
	opt = scanner.nextInt();
	return Opciones.values()[opt];
    }

    private void ejecutarAccion(Opciones opt) {
	switch (opt) {
	case NUEVA_PERSONA:
	    nuevaPersonaExt();
	    break;
	case NUEVA_EMPRESA:
	    nuevaEmpresaExt();
	    break;
	case LISTAR:
	    listaAgendaCompleta();
	    break;
	case BUSCAR_NOMBRE:
	    buscaEntradaPorNombre();
	    break;
	case BUSCAR_DIRECCION:
	    buscaEntradaPorDireccion();
	    break;
	case GENERAR_XML:
	    generaXML();
	    break;
	case SALIR:
	    System.out.println("\nBye!");
	    break;
	default:
	    System.out.println("\nOpcion incorrecta.");
	}
    }

    // private void nuevaPersona() {
    // String nombre;
    // String apellido;
    // String telefono;
    // Scanner scanner = new Scanner(System.in);
    //
    // System.out.println("\nNombre de la persona:\n ");
    // nombre = scanner.nextLine();
    // System.out.println("Apellido de la persona:\n ");
    // apellido = scanner.nextLine();
    // System.out.println("Telefono de la persona:\n ");
    // telefono = scanner.nextLine();
    // miAgenda.crearPersona(nombre, apellido, telefono);
    // }
    //
    // private void nuevaEmpresa() {
    // String nombre;
    // String telefono;
    // Scanner scanner = new Scanner(System.in);
    //
    // System.out.println("\nNombre de la empresa:\n ");
    // nombre = scanner.nextLine();
    // System.out.println("Telefono de la empresa:\n ");
    // telefono = scanner.nextLine();
    // miAgenda.crearEmpresa(nombre, telefono);
    // }

    private void nuevaPersonaExt() {
	String nombre;
	String apellido;
	String telefono;
	String cif;
	String direccion;
	Scanner scanner = new Scanner(System.in);

	System.out.println("\nNombre: ");
	nombre = scanner.nextLine();
	System.out.println("Apellidos: ");
	apellido = scanner.nextLine();
	System.out.println("Telefono: ");
	telefono = scanner.nextLine();
	System.out.println("NIF: ");
	cif = scanner.nextLine();
	System.out.println("Direccion: ");
	direccion = scanner.nextLine();

	miAgenda.crearPersona(nombre, apellido, telefono, cif, direccion);
    }

    private void nuevaEmpresaExt() {
	String nombre;
	String telefono;
	String cif;
	String direccion;
	Scanner scanner = new Scanner(System.in);

	System.out.println("\nRazon social: ");
	nombre = scanner.nextLine();
	System.out.println("Telefono: ");
	telefono = scanner.nextLine();
	System.out.println("NIF: ");
	cif = scanner.nextLine();
	System.out.println("Direccion: ");
	direccion = scanner.nextLine();

	miAgenda.crearEmpresa(nombre, telefono, cif, direccion);
    }

    private void listaAgendaCompleta() {
	for (int i = 0; i < miAgenda.getNInstancias(); i++) {
	    System.out.println((i + 1) + " " + miAgenda.listaEntrada(i));
	}
	System.out.println("\n");
    }

    private void buscaEntradaPorNombre() {
	System.out.println("\nEscribe el nombre a buscar: ");
	Scanner scanner = new Scanner(System.in);
	String nombre = scanner.nextLine();
	System.out.println("Entrada con el nombre: " + nombre);
	System.out.println(miAgenda.buscarNombreEntrada(nombre));
    }

    private void buscaEntradaPorDireccion() {
	System.out.println("\nEscribe la direccion a buscar: ");
	Scanner scanner = new Scanner(System.in);
	String direccion = scanner.nextLine();
	System.out.println("Entrada con la direccion: " + direccion);
	System.out.println(miAgenda.buscarDireccionEntrada(direccion));
    }

    private void generaXML() {
	System.out.println(miAgenda.generarXML());
    }

    // /**
    // * Genera 100 entradas en la agenda.
    // */
    // private void generaEntradasParaPruebas() {
    // for (int i = 0; i < 100; i++) {
    // GeneradorDatosINE generador = new GeneradorDatosINE();
    // if (!miAgenda.crearEntrada(generador.getNombre(),
    // generador.getApellido(), "000000000"))
    // System.out.println("Error! Entrada " + (i + 1)
    // + " Agenda completa.");
    // ;
    // }
    // }

}
